﻿package com.tools
{
	import com.vobject.ImageVO;
	
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// CLASSE UTILISÉE POUR PARSER LE XML
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	public class XmlParser
	{
		// tableau où l'on va stocker l'ensemble des informations extraites : c'est une variable 'static' pour pouvoir être utilisée dans le contexte d'une méthode 'static'
		static private var _imageArray : Array;
		
		// méthode utilitaire destinée à être appelé sans instancier la classe, pour effectuer le seul traitement de parser (c'est à dire analyser puis extraire) les informations en provenance d'un XML
		static public function parseXml ( pXml : XML ) : Array
		{
			// implémentation obligatoire pour empêcher les éventuels espaces contenus dans un XML de générer une erreur lors du parse
			XML.ignoreWhitespace = true;
			
			_imageArray = new Array();
			
			// on référence le noeud racine du XML
			var firstNode : XMLList = pXml.*;
			
			// pour chaque noeud qui contient les informations d'UNE image
			for each ( var node : XML in firstNode )
			{
				// si le noeud est bien un noeud <image>
				if ( node.localName() == "image" )
				{
					// on crée un nouvel objet de valeur ('VO' comme 'ValueObject' -> ImageVO) pour y stocker les informations sur l'image
					var imageVO : ImageVO = new ImageVO( );
					// on extrait les informations de chacun des attributs du noeud
					imageVO.name 	= node.@[ 'imgName' ]; // méthode dynamique pour pouvoir transférer la convention de nommage des noeuds/attributs de XML dans un fichier de config...
					imageVO.width	= node.@imgWidth;
					imageVO.height	= node.@imgHeight;
					// on ajoute l'objet de valeur au tableau
					_imageArray.push( imageVO );
				}
			}
			// on renvoie le tableau qui contient désormais un ImageVO pour chacune des images
			return _imageArray;
		}
	}
}